package com.yuwen.yuwenRPC.protocol;

/**
 * @ClassNameProtocalMessage
 * @Description TODO
 * @Author钰玟
 * @Date2025/4/2 下午7:22
 * @Version 1.0
 **/


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 自定义消息 结构类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProtocolMessage<T> {

    /**
     * 消息头
     */
    private Header header;

    /**
     * 消息体
     */
    private T body;

    /**
     * 消息头 的内部类
     */
    @Data
    public static class Header{

        /**
         * 魔数
         */
        private byte magic;
        /**
         * 版本号
         */
        private byte version;
        /**
         * 序列化方式
         */
        private byte serializer;
        /**
         * 类型
         */
        private byte type;
        /**
         * 状态
         */
        private byte status;


        /**
         * 请求 Id  唯一标识
         */
        private long requestId;


        /**
         * 请求体长度 ，确保消息的完整性
         */
        private int bodyLength;

    }
}
